/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package lianxishilili.demo.bill;

import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
import java.io.File;
import java.io.FileWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import lianxishilili.demo.model.AddressBookBean;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
 *
 * @author Administrator
 */
public class AddressBook {
    public boolean newCard(AddressBookBean newcard){
        Document doc;
        Element addressbook,card;
        Element name,mobile,office,home,qq,email,other;
        boolean flag=false;
        
        try{
            DocumentBuilderFactory f=DocumentBuilderFactory.newInstance();
            DocumentBuilder db=f.newDocumentBuilder();
            
            File file=new File("addressbook");
            if(!file.exists()){
                file.mkdir();
             }
            file=new File("addressbook/addressbook.xml");
            if(!file.exists()){
                flag=true;
                file.createNewFile();
                doc=db.newDocument();
                addressbook=doc.createElement("addressbook");
                
            }else{
                doc=db.parse(file);
                addressbook=(Element) doc.getElementsByTagName("Addressbook").item(0);
             }
            card=doc.createElement("card");
            name=doc.createElement("name");
            mobile=doc.createElement("mobile");
            office=doc.createElement("office");
            home=doc.createElement("home");
            qq=doc.createElement("qq");
            email=doc.createElement("email");
            other=doc.createElement("other");
            
            name.appendChild(doc.createTextNode(newcard.getName()));
            mobile.appendChild(doc.createTextNode(newcard.getMobile()));
            office.appendChild(doc.createTextNode(newcard.getOffice()));
            home.appendChild(doc.createTextNode(newcard.getHome()));
            qq.appendChild(doc.createTextNode(newcard.getQq()));
            email.appendChild(doc.createTextNode(newcard.getEmail()));
            other.appendChild(doc.createTextNode(newcard.getOther()));
            
            
           card.appendChild(name);
           card.appendChild(mobile);
           card.appendChild(office);
           card.appendChild(home);
           card.appendChild(qq);
           card.appendChild(email);
           card.appendChild(other);
           
           
          addressbook.appendChild(card);
          if(flag){
              doc.appendChild(addressbook);
             }
          TransformerFactory ff = TransformerFactory.newInstance();
            Transformer t = ff.newTransformer();            
            FileWriter fout = new FileWriter(file);
            t.transform(new DOMSource(doc), new StreamResult(fout));
            return true;
            
        
        }catch(Exception e){
        
        
        }
        
          
        return true;
        
     }
    public boolean modifyCard(AddressBookBean oldcard){
        Document doc;
        NodeList Cards;
        Element addressbook,card,newcard,oldname;
        Element name,mobile,office,home,qq,email,other;
        try{
            DocumentBuilderFactory f=DocumentBuilderFactory.newInstance();
            DocumentBuilder db=f.newDocumentBuilder();
            File file=new File("addressbook/addressbook.xml");
            if(!file.exists()){
                return false;
            }
            doc=db.newDocument();
            addressbook=(Element)doc.getElementsByTagName("Addressbook").item(0);
            cards =doc.getElementsByTagName("card");
            for(int i=0;i<cards.getLength();i++){
                card=(Element)cards.item(i);
                oldname=(Element)card.getElementsByTagName("Name").item(0);
                if(oldname.getFirstChild().getNodeValue().equals(oldcard.getName())){
                    newcard=doc.createElement("card");
                    name=doc.createElement("name");
                    mobile=doc.createElement("mobile");
                    office=doc.createElement("office");
                    home=doc.createElement("home");
                    qq=doc.createElement("qq");
                    email=doc.createElement("email");
                    other=doc.createElement("other");
                    
                    
                    
            name.appendChild(doc.createTextNode(oldcard.getName()));
            mobile.appendChild(doc.createTextNode(oldcard.getMobile()));
            office.appendChild(doc.createTextNode(oldcard.getOffice()));
            home.appendChild(doc.createTextNode(oldcard.getHome()));
            qq.appendChild(doc.createTextNode(oldcard.getQq()));
            email.appendChild(doc.createTextNode(oldcard.getEmail()));
            other.appendChild(doc.createTextNode(oldcard.getOther()));
            
            
           newcard.appendChild(name);
           newcard.appendChild(mobile);
           newcard.appendChild(office);
           newcard.appendChild(home);
           newcard.appendChild(qq);
           newcard.appendChild(email);
           newcard.appendChild(other);
           
           
           doc.replaceChild(newcard, card);
           
           
            TransformerFactory ff = TransformerFactory.newInstance();
            Transformer t = ff.newTransformer();            
            FileWriter fout = new FileWriter(file);
            t.transform(new DOMSource(doc), new StreamResult(fout));
            return true;
           
           
                
                
                
                }
            
            
            }
            
        return false;
        
        
        }catch (Exception e){
            e.printStackTrace();
            return false;
        
        
        }
       
     }
    public boolean delCard(String name){
        return true;
    }
    public Hashtable getAllCards(){
        return null;
     }
    public static void main(String[] args) {
     AddressBookBean newcard=new AddressBookBean("李四","1331122441","07715886655","077125553300","10055011","aa@","no",);
     new AddressBook().newCard(newcard);           
   
    }
   

}
